# backend/modules/visualization/models.py
# 导入所需的模块和扩展
from ...extensions import db, get_beijing_time

# 定义 Visualization 模型，继承自 db.Model
class Visualization(db.Model):
    # 指定表名
    __tablename__ = 'visualizations'

    # 定义模型的字段
    id = db.Column(db.Integer, primary_key=True)  # 主键ID，整数类型
    chart_type = db.Column(db.String(50), nullable=False)  # 图表类型，字符串类型，不能为空
    forecast_id = db.Column(db.Integer, db.ForeignKey('forecasts.id'), nullable=False)  # 外键关联预测表的ID，不能为空
    created_at = db.Column(db.DateTime, default=get_beijing_time, index=True)  # 创建时间，默认为获取北京时间，建立索引
    uploaded_file_id = db.Column(db.Integer, db.ForeignKey('uploaded_files.id'), nullable=False)  # 外键关联上传文件表的ID，不能为空
    image_path = db.Column(db.String(255), nullable=False)  # 存储图像文件路径，字符串类型，不能为空

    # 定义与 Forecast 模型的关系
    forecast = db.relationship('Forecast', back_populates='visualizations')

    # 定义与 UploadedFile 模型的关系
    uploaded_file = db.relationship('UploadedFile', back_populates='visualizations')

    # 定义模型的字符串表示
    def __repr__(self):
        return f"<Visualization {self.id} - UploadedFile ID {self.uploaded_file_id}>"
